1. Technical Field of the Invention
The invention relates generally to communication systems; and, more particularly, it relates to turbo trellis coded modulation (TTCM) communication systems and/or parallel concatenated turbo code modulated (PC-TCM) communication systems.
2. Description of Related Art
Turbo code and variants thereof have been the focus of a great deal of interest in the recent years. A primary directive in this area of development has been to try continually to lower the error floor within a communication system. The ideal goal has been to try reach Shannon's limit in a communication channel. Shannon's limit may be viewed as being the data rate that is used in a communication channel, having a particular signal to noise ratio (SNR), that will achieve error free transmission through the channel. In other words, the Shannon limit is the theoretical bound for channel capacity for a given modulation and code rate. The modulation may be viewed as including a constellation and mapping. The code rate may be viewed as the ratio of information bits over the total number of bits transmitted within the communication system. In the turbo code context, it is common to refer to code rate of n/m, where n is the number of information bits and m is the total number of bits, and where m>n. The difference between m and n typically being referred to as the number of redundant bits. Turbo codes typically introduce a degree of redundancy to at least a portion of data prior to transmission through a communication channel. This is generally referred to as forward error correction (FEC) coding.
Although there has been much development within the context of turbo code and related coding applications with increased interest recently, this focus has been primarily towards achieving very low bit error rates (BERs) across relatively noisy communication channels. As such, these prior art turbo codes largely operate at relatively low data rates across these noisy communication channels. The area of turbo code and variants thereof is still an area of relative immaturity in the technological development sense. While there has no doubt been a great amount of progress achieved this far, there still remains a great deal of development and improvement that can be done. This is a technology area where industry-wide consensus has certainly not yet been achieved, and there are many competing viewpoint within the industry as to which direction/directions the technological community's effort should be directed.
The use of turbo codes to provide such low error, while operating at relatively low rates, has largely been in the context of communication systems having a large degree of noise within the communication channel and where substantially error free communication is held at the highest premium. Some of the earliest application arenas for turbo coding were space related where accurate (ideally error free) communication is often deemed an essential design criterion. The direction of development then moved towards developing terrestrial-applicable and consumer-related applications. Still, the focus of effort here has continued to be achieving low error floors, and not specifically towards reaching higher throughput.
As such, there exists a need in the art to develop turbo code related coding that is operable to support higher amounts of throughput while still preserving the relatively low error floors offered within the turbo code context. Whereas the development of turbo code related technology has primarily been directed towards relatively low rates across noisy communication channels, there exists a need to overcome the many hurdles that prevent the application of turbo code to higher data rate applications. In doing so, these higher data rate applications may benefit from the low BERs offered by turbo codes.
There are many bottlenecks that have prevented the implementation of turbo code within communication applications that operate at high data rates. Many of these bottlenecks are computational in nature and simply require such significant processing resources that they cannot be implemented to support high data rate applications. One of the problematic areas within the turbo code context is the relatively extensive calculation of values that are needed to perform turbo decoding.
One of the bottlenecks in performing the iterative decoding employed within the turbo code context involves calculating the extrinsic information that is used within Soft-In-Soft-Out (SISO) decoders. Typical decoders employ a straightforward, brute force approach to calculating these extrinsic values that are employed to the iterative decoding. In most prior art contexts, where speed and data throughput were not primary design considerations, theses decoders would simply provision a great deal of processing resources to meet the extremely high demand of resources to meet these needs. However, there are many, many applications where it is simply cost-prohibitive to allocate such a significant amount of needed hardware to allow for the full blown processing and calculation of these values using the conventional approaches. A more common result was this: when the implementation at hand did not lend itself to such a large allocation of processing resources (which certainly included most commercial communication applications), then the data rate would suffer significantly at the expense of ensuring as low BER operation as possible.
When the primary design directive was to achieve as close to error free transmission as possible, then a slow down in data rate (from an already relatively low data rate) was not of significant concern and would be accepted relatively easily. Of the many, the calculation of extrinsic values that are employed to perform iterative decoding is one area where a great deal of development must be made in order to allow the entrance of turbo code into commercial, specifically consumer-level, communication applications on a broad scale. As such, there exists a need to provide for more efficient calculation of extrinsic values for use in performing iterative decoding within the turbo code context.